var sqlite3 = require("sqlite3");
const Sqlite3 = sqlite3.verbose()
class Sqlite3Util {
  constructor() {
    
  }
  // 连接数据库
  static connect(path) {
    return new Promise((resolve,reject) => {
      let db  = new Sqlite3.Database(path, (err) => {
        if(err === null) {
          resolve(db);
        } else {
          reject(err)
        }
      });
    })
  }
// 运行sql
  static run(db,sql, params) {
    return new Promise((resolve, reject) => {
      db.run(sql, params, function(err){
        if(err === null) {
          resolve(err)
        } else {
          reject(err)
        }
      })
    })
  }
// 运行多条sql
  static exec(db,sql) {
    return new Promise((resolve, reject) => {
      db.exec(sql, (err) => {
        if(err === null) {
          resolve(err)
        } else {
          reject(err)
        }
      })
    })
  }
// 查询一条数据
  static get(db,sql, params) {
    return new Promise((resolve, reject) => {
      db.get(sql, params, (err, data) => {
        if(err) {
          reject(err)
        } else {
          resolve(data)
        }
      })
    })
  }
// 查询所有数据 数据量小
static all(db,sql, params) {
    return new Promise((resolve, reject) => {
      db.all(sql, params, (err, data) => {
        if(err) {
          reject(err)
        } else {
          resolve(data)
        }
      })
    })
  }
// 分段查询所有数据
static each(db,sql, params) {
  return new Promise((resolve, reject) => {
    let data = [];
    db.each(sql, params, (err, row) => {
      if(err) {
        reject(err)
      } else {
        data.push(row);
      }
    },()=>{
      resolve(data);
    })
  })
}
// static prepare(db,sql, params) {
//   return new Promise((resolve, reject) => {
//     let stmt = db.prepare(sql, params, (err) => {
//       if(err) {
//         reject(err)
//       } else {
//         resolve(stmt)
//       }
//     })
//   })
// }
// static stmtRun(stmt, params) {
//   return new Promise((resolve, reject) => {
//      stmt.run(params, (err) => {
//       if(err) {
//         reject(err)
//       } else {
//         resolve(stmt)
//       }
//     })
//   })
// }
// static stmtFinalize(stmt) {
//   return new Promise((resolve, reject) => {
//     stmt.finalize((err) => {
//       if(err) {
//         reject(err)
//       } else {
//         resolve()
//       }
//     })
//   })
// }
// 关闭数据库
  static close(db) {
    return new Promise((resolve, reject) => {
      db.close((err) => {
        if(err) {
          reject(err)
        } else {
          resolve(err)
        }
      })
    })
  }

}
appConfig.dbPath = appConfig.dbPath;
module.exports =  Sqlite3Util;